<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div id="root">
    123
  </div>
</body>
<script type="text/javascript">
  let number = 18
  let person = {
    name: '张三',
    sex: '男'
  }

  Object.defineProperty(person, 'age', {
    // value: 18,
    // enumerable: true,//控制属性是否可以枚举，默认值为false
    // writeable: true,//控制属性是否可以被修改，默认值为false
    // configurable: true//控制属性是否可以被删除，默认为false

    //当有人读取person的age属性的时候，get函数将会被触发，且返回值就是age的值
    get: function () {
      console.log("有人在读取age的值");
      return number;
    },

    //当有人修改person的age属性的时候，set函数将会被触发，且会收到修改的具体值
    set: function (value) {
      number = value;
    }

  })

  console.log(person)
</script>

</html>